Hiệu năng Microkernel

Trên hầu hết các bộ xử lý chính thống, việc nhận được một dịch vụ vốn đã đắt hơn trong một hệ thống dựa trên microkernel hơn là một hệ thống monolithic.[10] Trong hệ thống monolithic, dịch vụ có được bằng một lệnh gọi hệ thống, yêu cầu hai mode switches (thay đổi vòng của bộ xử lý hoặc chế độ CPU). Trong hệ thống dựa trên microkernel, dịch vụ nhận được bằng cách gửi một thông điệp IPC đến một server, và nhận được kết quả trong một thông điệp IPC khác từ server. Điều này yêu cầu chuyển đổi ngữ cảnh nếu các trình điều khiển được triển khai dưới dạng các quy trình hoặc một lệnh gọi hàm nếu chúng được thực hiện dưới dạng các thủ tục. Ngoài ra, việc chuyển dữ liệu thực tế đến máy chủ và quay lại có thể phát sinh thêm chi phí sao chép, trong khi trong một hệ thống monolithic, hạt nhân có thể truy cập trực tiếp vào dữ liệu trong bộ đệm của máy khách.

Do đó, hiệu suất là một vấn đề tiềm ẩn trong các hệ thống microkernel. Thật vậy, kinh nghiệm của các microkernels thế hệ đầu tiên như Mach hayChorusOS cho thấy rằng các hệ thống dựa trên chúng hoạt động rất kém. Tuy nhiên, Jochen Liedtke đã chỉ ra rằng các vấn đề về hiệu suất của Mach là kết quả của việc thiết kế và triển khai kém, cụ thể là bộ nhớ đệm quá nhiều của Mach.Liedtke đã chứng minh với L4 microkernel của riêng mình rằng thông qua thiết kế và triển khai cẩn thận, và đặc biệt là bằng cách tuân theo nguyên tắc tối thiểu, chi phí IPC có thể giảm nhiều hơn một bậc so với Mach.Hiệu suất IPC của L4 vẫn bất bại trên nhiều loại kiến trúc.

Mặc dù những kết quả này chứng minh rằng hiệu suất kém của các hệ thống dựa trên các microkernels thế hệ thứ nhất không phải là đại diện cho các hạt nhân thế hệ thứ hai như L4, nhưng điều này không tạo ra bằng chứng rằng các hệ thống dựa trên microkernel có thể được xây dựng với hiệu suất tốt. Nó đã được chỉ ra rằng một máy chủ Linux nguyên khối được chuyển sang L4 chỉ thể hiện một vài phần trăm chi phí so với Linux gốc.[12]Tuy nhiên, hệ thống một máy chủ như vậy thể hiện rất ít lợi thế, nếu có, các microkernel được cho là cung cấp bằng cách cấu trúc chức năng của hệ điều hành thành các máy chủ riêng biệt.

Một số hệ thống đa máy chủ thương mại tồn tại, đặc biệt là hệ thống thời gian thực QNX và Integrity. Không có so sánh toàn diện về hiệu suất so với các hệ thống nguyên khối đã được công bố cho các hệ thống nhiều máy chủ đó. Hơn nữa, hiệu suất dường như không phải là mối quan tâm lớn đối với các hệ thống thương mại đó, thay vào đó nhấn mạnh thời gian phản hồi xử lý ngắt nhanh đáng tin cậy (QNX) và tính đơn giản vì lợi ích của sự mạnh mẽ. Một nỗ lực để xây dựng một hệ điều hành đa máy chủ hiệu suất cao là dự án IBM Sawmill Linux.Tuy nhiên, dự án này đã không bao giờ được hoàn thành.

Trong khi đó, người ta đã chứng minh rằng trình điều khiển thiết bị cấp người dùng có thể đạt được hiệu suất của trình điều khiển trong nhân ngay cả đối với các thiết bị có thông lượng cao, ngắt quãng cao như Gigabit Ethernet.[13] Điều này dường như ngụ ý rằng các hệ thống đa máy chủ hiệu suất cao là có thể.

Tài liệu tham khảo

WikiPedia: Microkernel http://www.byte.com:80/art/9401/sec8/art2.htm http://www.oreilly.com/catalog/opensources/book/ap... http://www.realworldtech.com/forums/index.cfm?acti... http://www.inf.tu-dresden.de/index.php?node_id=269... http://os.ibds.kit.edu/65_747.php http://citeseerx.ist.psu.edu/search?q=microkernel http://www.eecis.udel.edu/~mills/database/papers/n... http://brinch-hansen.net/memoirs/contents.html http://www.brinch-hansen.net/papers/1970a.pdf http://www.cs.vu.nl/~ast/reliable-os/